#ifndef CWEAPON_H_
#define CWEAPON_H_

class CWeapon
{
private:
	string m_strWeaponType;
	int m_nWeaponLevel;
	int m_nLightBaseDamage;
	int m_nMediumBaseDamage;
	int m_nHeavyBaseDamage;
	int m_nExperienceToNextLevel;

	CWeapon( void ){ }
	CWeapon( const CWeapon& );
	CWeapon& operator=( const CWeapon& );


public:
	CWeapon( char* strWeaponType, int nWeaponLevel, int nLightBaseDamage, int nMediumBaseDamage, int nHeavyBaseDamage, 
		 int nExperienceToNextLevel )
	{
		m_strWeaponType  = strWeaponType;
		m_nWeaponLevel  = nWeaponLevel;
		m_nLightBaseDamage = nLightBaseDamage;
		m_nMediumBaseDamage = nMediumBaseDamage;
		m_nHeavyBaseDamage = nHeavyBaseDamage;
		m_nExperienceToNextLevel = nExperienceToNextLevel;
	}
		~CWeapon( void ){ }


	static CWeapon* GetInstance( void )
	{
		static CWeapon weapon;
		return &weapon;
	}
	// Accessors
	string GetWeaponType( void )				{ return m_strWeaponType;					}
	int GetWeaponLevel( void )				{ return m_nWeaponLevel;					}
	int GetLightBaseDamage( void )			{ return m_nLightBaseDamage;				}
	int GetMediumBaseDamage( void )	{ return m_nMediumBaseDamage;			}
	int GetHeavyBaseDamage( void )		{ return m_nHeavyBaseDamage;			}
	int GetExpToNextLevel( void )			{ return m_nExperienceToNextLevel;		}

	// Mutators
	void SetWeaponType( string strWeaponType )					{ m_strWeaponType = strWeaponType;							}
	void SetWeaponLevel( int nWeaponLevel )					{ m_nWeaponLevel = nWeaponLevel;							}
	void SetLightBaseDamage( int nLightDamage )				{ m_nLightBaseDamage = nLightDamage;						}
	void SetMediumBaseDamage( int nMediumDamage )		{ m_nMediumBaseDamage = nMediumDamage;			}
	void SetHeavyBaseDamage( int nHeavyDamage )			{ m_nHeavyBaseDamage = nHeavyDamage;					}
	void SetExpToNextLevel( int nNeededExpPoints )			{ m_nExperienceToNextLevel = nNeededExpPoints;		}
};
#endif